package com.yeswater.rabbitmq;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.MessageProperties;
import com.yeswater.rabbitmq.utils.RabbitmqUtil;

import java.nio.charset.StandardCharsets;
import java.util.Scanner;

/**
 * 生产者
 * 验证 : 手动应答时消息不会丢失,重新回到消费队列
 * Author : yeswater
 */

public class Task {

    public static final String QUEUE_NAME = "mq03";

    public static void main(String[] args) throws Exception {
        Channel channel = RabbitmqUtil.getChannel();
        /**
         * 生成队列
         * 1.队列名称
         * 2.队列消息是否持久化
         * 3.队列是否仅供一个消费者消费
         * 4.是否自动删除 最后一个消费者断开连接后是否自动删除队列
         * 5.其他参数
         */
        channel.queueDeclare(QUEUE_NAME, false, false, false, null);
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLine()) {
            String message = scanner.nextLine();
            /**
             * 发送一个消息
             * 1.发送到哪个交换机
             * 2.路由的 key是哪个值
             * 3.其他参数消息
             * 4.发送消息的消息体
             */
            channel.basicPublish("", QUEUE_NAME, null, message.getBytes(StandardCharsets.UTF_8));
            // 消息持久化
//            channel.basicPublish("",QUEUE_NAME, MessageProperties.PERSISTENT_TEXT_PLAIN,message.getBytes(StandardCharsets.UTF_8));
            System.out.println("发布消息: " + message);
        }
    }

}
